10분 안에 R 배우기
R은 통계 컴퓨팅, 데이터 분석, 시각화를 위한 강력한 프로그래밍 언어이자 환경입니다. 이 튜토리얼에서는 R 프로그래밍을 시작하는 데 필요한 핵심 개념들을 다룹니다.
1. R 시작하기
간단한 프로그램부터 시작해보겠습니다. R이나 RStudio를 열고 다음 코드를 입력하세요:
print("Hello, World!")
R 콘솔에서도 실행할 수 있습니다. 출력 결과는 다음과 같습니다:
[1] "Hello, World!"
이 간단한 프로그램은 R의 기본 출력 기능을 보여줍니다. print()
함수는 콘솔에 텍스트 정보를 표시합니다.
2. 기본 문법과 변수
R의 문법은 통계 컴퓨팅과 데이터 분석을 위해 설계되었습니다. 기본적인 변수 할당과 연산을 살펴보겠습니다.
# 이것은 주석입니다
x <- 5 # <- 연산자를 사용한 할당
y = 10 # = 연산자를 사용한 할당 (덜 일반적)
print(x + y)
R의 기본 문법 규칙:
- 할당: 변수 할당에는
<-
사용 (권장) 또는=
- 주석: 한 줄 주석은
#
으로 시작 - 함수: 함수 호출에는 괄호
()
사용 - 벡터: R은 벡터화됨 - 연산이 전체 벡터에 적용됨
3. 데이터 타입과 구조
R에는 통계 컴퓨팅을 위한 여러 기본 데이터 타입과 구조가 있습니다.
3.1 기본 데이터 타입
# 숫자형 (실수)
num <- 3.14
print(class(num))
# 정수형
int <- 42L
print(class(int))
# 문자형 (문자열)
text <- "Hello R"
print(class(text))
# 논리형 (불리언)
flag <- TRUE
print(class(flag))
3.2 벡터
벡터는 R의 기본 데이터 구조입니다. 숫자형, 문자형, 논리형 데이터를 담을 수 있는 1차원 배열입니다.
# 벡터 생성
numeric_vector <- c(1, 2, 3, 4, 5)
character_vector <- c("apple", "banana", "cherry")
logical_vector <- c(TRUE, FALSE, TRUE)
# 벡터 연산
print(numeric_vector * 2) # 각 요소를 2로 곱함
print(numeric_vector + 1) # 각 요소에 1을 더함
print(length(numeric_vector)) # 벡터 길이 가져오기
3.3 리스트
리스트는 서로 다른 타입의 요소를 담을 수 있는 유연한 컨테이너입니다.
# 리스트 생성
my_list <- list(
name = "John",
age = 30,
scores = c(85, 92, 78),
active = TRUE
)
# 리스트 요소 접근
print(my_list$name)
print(my_list[["age"]])
print(my_list[[3]])
3.4 데이터 프레임
데이터 프레임은 R에서 데이터 분석을 위한 가장 중요한 데이터 구조입니다. 행과 열이 있는 테이블과 유사합니다.
# 데이터 프레임 생성
df <- data.frame(
name = c("Alice", "Bob", "Charlie"),
age = c(25, 30, 35),
score = c(88, 92, 85)
)
# 데이터 프레임 보기
print(df)
print(str(df)) # 데이터 프레임 구조
print(summary(df)) # 요약 통계
4. 기본 연산
R은 수학적 및 논리적 연산을 위한 다양한 연산자들을 제공합니다.
# 산술 연산
a <- 10
b <- 3
print(a + b) # 덧셈
print(a - b) # 뺄셈
print(a * b) # 곱셈
print(a / b) # 나눗셈
print(a ^ b) # 거듭제곱
print(a %% b) # 나머지
print(a %/% b) # 정수 나눗셈
# 비교 연산
print(a > b) # 보다 큼
print(a == b) # 같음
print(a != b) # 같지 않음
print(a <= b) # 보다 작거나 같음
# 논리 연산
print(TRUE & FALSE) # AND
print(TRUE | FALSE) # OR
print(!TRUE) # NOT
5. 제어 구조
R은 프로그램 흐름을 위한 표준 제어 구조를 제공합니다.
5.1 if 문
age <- 20
if (age >= 18) {
print("성인")
} else if (age >= 13) {
print("청소년")
} else {
print("어린이")
}
5.2 for 반복문
# 벡터 반복
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}
# 시퀀스 사용
for (i in 1:5) {
print(paste("숫자:", i))
}
5.3 while 반복문
count <- 1
while (count <= 5) {
print(count)
count <- count + 1
}
6. 함수
R의 함수는 특정 작업을 위한 재사용 가능한 코드 블록입니다.
# 기본 함수 정의
calculate_area <- function(length, width) {
area <- length * width
return(area)
}
# 함수 호출
result <- calculate_area(5, 3)
print(result)
# 기본 매개변수가 있는 함수
greet <- function(name = "Guest") {
return(paste("Hello,", name))
}
print(greet("Alice"))
print(greet()) # 기본 매개변수 사용
7. 데이터 조작
R은 데이터 조작에 뛰어납니다. 몇 가지 기본 연산을 살펴보겠습니다.
# 샘플 데이터 프레임
students <- data.frame(
name = c("Alice", "Bob", "Charlie", "Diana"),
math_score = c(85, 92, 78, 95),
science_score = c(88, 90, 82, 96),
grade = c("A", "A", "B", "A")
)
# 데이터 부분집합
print(students[students$math_score > 85, ]) # 수학 점수가 85보다 큰 행
print(students[, c("name", "math_score")]) # 특정 열
# 새 열 추가
students$total_score <- students$math_score + students$science_score
students$average_score <- students$total_score / 2
print(students)
8. 데이터 시각화
R은 특히 ggplot2와 함께 강력한 시각화 기능을 가지고 있습니다.
# 기본 플로팅 (기본 R)
# 샘플 데이터 생성
x <- 1:10
y <- x^2
# 산점도
plot(x, y, main = "산점도", xlab = "X", ylab = "Y", col = "blue", pch = 16)
# 선 그래프
plot(x, y, type = "l", main = "선 그래프", xlab = "X", ylab = "Y", col = "red")
# 히스토그램
hist(rnorm(100), main = "히스토그램", xlab = "값", col = "lightblue")
8.1 ggplot2 사용하기 (설치된 경우)
# 아직 설치되지 않았다면 ggplot2 설치 및 로드
# install.packages("ggplot2")
library(ggplot2)
# 샘플 데이터 프레임 생성
plot_data <- data.frame(
category = c("A", "B", "C", "D"),
value = c(25, 40, 30, 35)
)
# 막대 그래프 생성
ggplot(plot_data, aes(x = category, y = value)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "막대 그래프 예제", x = "카테고리", y = "값") +
theme_minimal()
9. 통계 분석
R은 통계 컴퓨팅을 위해 설계되었습니다. 몇 가지 기본 통계 함수를 살펴보겠습니다.
# 샘플 데이터
data <- c(23, 45, 67, 34, 56, 78, 89, 12, 45, 67)
# 기본 통계
print(mean(data)) # 평균
print(median(data)) # 중앙값
print(sd(data)) # 표준편차
print(var(data)) # 분산
print(min(data)) # 최솟값
print(max(data)) # 최댓값
print(summary(data)) # 다섯 숫자 요약
# 상관관계
x <- 1:10
y <- x + rnorm(10) # 약간의 노이즈 추가
print(cor(x, y)) # 상관계수
# 선형 회귀
model <- lm(y ~ x)
print(summary(model))
10. 파일 작업
R은 파일 읽기와 쓰기를 위한 함수들을 제공합니다.
# 파일에 쓰기
write.csv(students, "students.csv", row.names = FALSE)
# 파일에서 읽기
# read_data <- read.csv("students.csv")
# print(read_data)
# 텍스트 파일 작업
# writeLines(c("Line 1", "Line 2", "Line 3"), "example.txt")
# text_content <- readLines("example.txt")
# print(text_content)
11. 패키지와 라이브러리
R의 강력함은 광범위한 패키지 생태계에서 비롯됩니다.
# 패키지 설치
# install.packages("dplyr") # 데이터 조작용
# install.packages("ggplot2") # 시각화용
# 패키지 로드
library(dplyr)
library(ggplot2)
# dplyr을 사용한 데이터 조작
# students %>%
# filter(math_score > 85) %>%
# select(name, math_score) %>%
# arrange(desc(math_score))
12. 오류 처리
R은 오류 처리를 위한 메커니즘을 제공합니다.
# 기본 오류 처리
tryCatch({
result <- 10 / 0
print(result)
}, error = function(e) {
print(paste("오류 발생:", e$message))
}, finally = {
print("이 부분은 항상 실행됨")
})
# try() 사용
result <- try(10 / 0, silent = TRUE)
if (inherits(result, "try-error")) {
print("나눗셈 실패")
}
13. 고급 주제
13.1 apply 계열 함수
apply 계열 함수는 벡터화된 연산에 강력합니다.
# 행렬 생성
mat <- matrix(1:12, nrow = 3, ncol = 4)
print(mat)
# apply 함수
print(apply(mat, 1, mean)) # 행 평균
print(apply(mat, 2, sum)) # 열 합계
# 리스트용 lapply
my_list <- list(a = 1:5, b = 6:10, c = 11:15)
print(lapply(my_list, mean)) # 각 리스트 요소의 평균
# sapply (단순화된 버전)
print(sapply(my_list, mean))
13.2 문자열 조작
text <- "Hello R Programming"
print(toupper(text)) # 대문자로 변환
print(tolower(text)) # 소문자로 변환
print(nchar(text)) # 문자 수 세기
print(substr(text, 1, 5)) # 부분 문자열 추출
# stringr 패키지 사용 (설치된 경우)
# library(stringr)
# str_split(text, " ") # 문자열 분할
13.3 날짜와 시간
# 현재 날짜와 시간
current_time <- Sys.time()
print(current_time)
# 날짜 형식화
formatted_date <- format(current_time, "%Y-%m-%d")
print(formatted_date)
# 날짜 연산
today <- Sys.Date()
future_date <- today + 30
print(future_date)
14. 모범 사례
더 나은 R 코드를 작성하기 위한 몇 가지 팁입니다:
- 의미 있는 변수 이름 사용하기
- 코드에 적절히 주석 달기
- 가능하면 반복문 대신 벡터화된 연산 사용하기
- 스크립트 시작 부분에서 패키지 로드하기
- 일관된 들여쓰기 사용하기 (2칸 권장)
- 샘플 데이터로 코드 테스트하기
- 프로젝트에 버전 관리 사용하기
15. 다음 단계
R 학습을 계속하려면:
- 연습: 작은 데이터 분석 프로젝트 작업하기
- 패키지 탐색: dplyr, ggplot2, tidyr 및 기타 필수 패키지 학습하기
- 온라인 자료: R 문서, Stack Overflow, R-bloggers 활용하기
- 책: Hadley Wickham의 “R for Data Science”
- 강좌: R을 사용한 데이터 분석 온라인 강좌 수강하기
R은 통계 컴퓨팅과 데이터 분석을 위한 강력한 도구입니다. 연습을 통해 복잡한 데이터 조작, 아름다운 시각화 생성, 정교한 통계 분석을 수행할 수 있게 될 것입니다.